{
    _CP_.OPTIONS_HANDLER.set('color', {
        [Etype.string]: U.D.toColor,
    });
}

type Toptions_COLOR$_ = string;

type Toptions_COLOR = {
    /** 颜色 */
    color?: Toptions_COLOR$_;
    /** 背景颜色 */
    backgroundColor?: Toptions_COLOR$_;
    /** 边框颜色 */
    borderColor?: Toptions_COLOR$_;
};

/**
 * 颜色控件注解
 * @param target 目标类型
 */
function ACcolor(target: any) {
    if (!U.isSubClass(_CP_, target)) { return; }

    // 处理器
    const original_options_handlers = target.prototype.options_handlers;
    target.prototype.options_handlers = function (this: _CP_<any>) {
        const options_handlers = original_options_handlers.call(this);

        U.O.setDefaultValue(options_handlers, 'color', _CP_.OPTIONS_HANDLER.get('color'));
        U.O.setDefaultValue(options_handlers, 'backgroundColor', _CP_.OPTIONS_HANDLER.get('color'));
        U.O.setDefaultValue(options_handlers, 'borderColor', _CP_.OPTIONS_HANDLER.get('color'));

        return options_handlers;
    };

    // 初始化
    const original_afterInitializer = target.prototype.afterInitializer;
    target.prototype.afterInitializer = function (this: _CP_<any>) {
        original_afterInitializer.call(this);

        // 设置 颜色
        if (Object.prototype.hasOwnProperty.call(this.options, 'color')) {
            this.ele.setStyle('color', this.options.color);
        }

        // 设置 背景颜色
        if (Object.prototype.hasOwnProperty.call(this.options, 'backgroundColor')) {
            this.ele.setStyle('backgroundColor', this.options.backgroundColor);
        }

        // 设置 边框颜色
        if (Object.prototype.hasOwnProperty.call(this.options, 'borderColor')) {
            this.ele.setStyle('borderColor', this.options.borderColor);
        }
    };
}
